Computerized devices control almost every aspect of our life—from writing documents to controlling traffic lights. However, computerized devices are bug-prone, and thus require a testing phase in which the bugs should be discovered. The testing phase is considered one of the most difficult tasks in devote a significant portion, such as 70%, of the development cycle to discover erroneous behaviors of the software employing the computerized device.
In order to determine that a testing phase is of a relatively high quality, coverage analysis may be utilized. By analyzing coverage of tests, a developer or any other user interested in testing the software, such as for example a member of a Quality Assurance (QA) team, may be informed which aspects or parts of the software have been sufficiently tested by the executed tests, and which aspects or parts have not.
Various different coverage metrics may be employed, such as but not limited to code coverage metrics, functional coverage metrics and data coverage metrics.
Code coverage describes the degree to which the source code of a program has been tested. Code coverage metrics are associated with portions of the software, and are indicative of whether specific portions of the code have been executed and tested. Code coverage may refer to execution of a statement, line, a function, code within a file, code of files in a directory, code associated with an object, code associated with a method of an object or the like.